# -*- coding: UTF-8 -*-

"""面向对象"""

"""
第一种方式设置属性
"""
class Person(object):
    def move(self):
        print("第一种方法----------")

# 创建对象
xiaoh = Person()
# 调用方法
xiaoh.move()
# 创建属性(对象名.属性名 =)
xiaoh.name = "xiaohong"
xiaoh.age = 18
print(xiaoh.name)
print(xiaoh.age)
# 一个类可以创建多个对象
xiaom = Person()
xiaom.name = "xiaom"
xiaom.age = 17
print(xiaom.name)
print(xiaom.age)

"""第二种设置属性方法：self获取对象属性
"""
class Person(object):
    def move(self):
        print("第二种方法----")
# 在方法中打印属性
    def printInfo(self):
       print(self.name)
       print(self.age)

xiaoh=Person()
xiaoh.move()
# 对象创建后。。对象名.属性名，给属性赋值
xiaoh.name="xiaohong"
xiaoh.age=18
# 直接调用方法即可获取属性
xiaoh.printInfo()
xiaom=Person()
xiaom.name="xiaoming"
xiaom.age=17
xiaom.printInfo()

"""
第三种方法：init魔法方法在常见对象是就拥有了属性
# 无参数的init方法：
#     def __init__(self):
#         self.name = "xiaoming"
#         self.age = 17
"""
class Person(object):

# 使用有参数init魔法方法创建对象属性值

    def __init__(self, name, age):
        self.name = name
        self.age = age
    def move(self):
        print("第三种方法"+"-" * 10)
    def info(self):
        print(self.name)
        print(self.age)
# 在创建对象时传递属性值
xiaoh = Person("xiaohong", 18)
xiaom = Person("xiaoming", 17)
xiaom.move()
xiaoh.info()
xiaom.info()

class Person(object):
    def __init__(self):
        pass
    def move(self):
        print("这是什么方法和init方法有什么不一样" + "?"* 15)
    def info(self, name, age):
        self.name = name
        self.age = age
        print(name)
        print(age)
xiaom = Person()
xiaoh = Person()
xiaoh.move()
xiaoh.info("xiaohong", 18)
xiaom.info("xiaoming", 17)
